//本文件功能测试例子,具体项目需要修改
//zone --> center 通讯
//id 50-60
#pragma once
#include <string>
#include <vector>
#include <map>
#include "ProtoMarco.h"

#pragma pack(push)
#pragma pack(1)
namespace proto {

	//扩展结构体测试
	struct TestExtendOld
	{
		char a = 0;
		int b = 0;
		std::string s;
		//int c;
	};
	REFLECTION_EXTEND(TestExtendOld, a, b, s)


	struct TestExtendNew
	{
		char a = 0;
		int b = 0;
		std::string s;
		int c=33;
	};
	REFLECTION_EXTEND(TestExtendNew, a, b, s)

	struct DataNew
	{
		char a = 0;
		int b = 0;
		std::string s;
		//int c;
	};
	REFLECTION(DataNew, a, b, s);

	struct Data
	{
		uint8_t id;
		std::vector<uint32_t> ids;
	};
	REFLECTION(Data, id, ids);


	struct Ride
	{
		std::vector<uint32_t> ids;
		std::string s;
		std::unordered_map<uint32_t, uint32_t> m;
		std::vector<Data> datas;
	};
	REFLECTION(Ride, ids, s, m, datas);

}

namespace proto {

	//测试结构体，新项目需要修改删掉
	struct ReqZoneOk_cs
	{
		const uint16_t id = 50;
		uint16_t svrId = 0;
		std::string s; 
		Ride ride;
	};
	REFLECTION(ReqZoneOk_cs, id, svrId, s, ride);


	struct ReqEchoCs
	{
		const uint16_t id = 1;
		std::string str;
	};
	REFLECTION(ReqEchoCs, id, str);

	struct ReqEchoCs2
	{
		const uint16_t id = 1;
		std::string str;
	};
	REFLECTION(ReqEchoCs2, id, str);
	//通知文本字符串，客户端直接现实
	struct NtfTipsSc
	{
		const uint16_t id = 2;
		std::string str;
	};
	REFLECTION(NtfTipsSc, id, str);



}
#pragma pack(pop)
